﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using DomainDriver.DomainModeling.DataProviders;

namespace DomainDriver.DomainModeling.DomainModels.ConstructionResources
{
    internal class DataSourceConstructionSpecification
    {
        private DataSourcePersistenceType m_PersistenceType;
        private Type m_DataSourceType;
        private Func<Type, Type, Type, IDataProvider, Expression, object> m_RepositoryConstructionSpecification;

        public DataSourceConstructionSpecification(DataSourcePersistenceType persistenceType, Type dataSourceType, Func<Type, Type, Type, IDataProvider, Expression, object> repositoryConstructionSpecification)
        {
            m_PersistenceType = persistenceType;
            m_DataSourceType = dataSourceType;
            m_RepositoryConstructionSpecification = repositoryConstructionSpecification;
        }

        public DataSourcePersistenceType PersistenceType
        {
            get { return m_PersistenceType; }
        }

        public Type DataSourceType
        {
            get { return m_DataSourceType; }
        }

        public Func<Type, Type, Type, IDataProvider, Expression, object> RepositoryConstructionSpecification
        {
            get { return m_RepositoryConstructionSpecification; }
        }
    }
}